www.gusucode.com > 基于matlab编程空间复用空时码的仿真程序源码 > 基于matlab编程空间复用空时码的仿真程序源码/2Tx,2Rx,Spatial Multiplex/addAWGN_2x2.m
function addAWGN_2x2(awgnparams,NoiseVar) randn('state',sum(100*clock)); % --------Add Noise to Rx Antenna 1----------- awgnipfid_rx1 = fopen(awgnparams.rx1_infile, 'r'); % open awgn input file if awgnipfid_rx1 <= 0 error('unable to open awgn Rx 1 input file'); end awgnopfid_rx1 = fopen(awgnparams.rx1_outfile, 'a'); % open channel output file,append to save different dB data if awgnopfid_rx1 < 0 error('unable to open awgn Rx 1 output file'); end for frm=1:awgnparams.numframe [awgnInData, datalen] = fread(awgnipfid_rx1, 2*awgnparams.cohtime, 'float32'); if datalen~=2*awgnparams.cohtime, frm,error('fread awgn Rx 1 input data error!'); end awgnInData = [ 1 1j ] * reshape(awgnInData, 2, datalen/2); Len = datalen/2; Addnoise = sqrt(NoiseVar)*sqrt(1/2)*(randn(1,Len)+j*randn(1,Len)); awgnOutData=awgnInData+Addnoise; fwrite(awgnopfid_rx1, [real(awgnOutData);imag(awgnOutData)], 'float32'); end fclose(awgnipfid_rx1); fclose(awgnopfid_rx1); % --------Add Noise to Rx Antenna 2----------- awgnipfid_rx2 = fopen(awgnparams.rx2_infile, 'r'); % open awgn input file if awgnipfid_rx2 <= 0 error('unable to open awgn Rx 2 input file'); end awgnopfid_rx2 = fopen(awgnparams.rx2_outfile, 'a'); % open channel output file,append to save different dB data if awgnopfid_rx2 < 0 error('unable to open awgn Rx 2 output file'); end for frm=1:awgnparams.numframe [awgnInData, datalen] = fread(awgnipfid_rx2, 2*awgnparams.cohtime, 'float32'); if datalen~=2*awgnparams.cohtime, frm,error('fread awgn Rx 2 input data error!'); end awgnInData = [ 1 1j ] * reshape(awgnInData, 2, datalen/2); Len = datalen/2; Addnoise = sqrt(NoiseVar)*sqrt(1/2)*(randn(1,Len)+j*randn(1,Len)); awgnOutData=awgnInData+Addnoise; fwrite(awgnopfid_rx2, [real(awgnOutData);imag(awgnOutData)], 'float32'); end fclose(awgnipfid_rx2); fclose(awgnopfid_rx2);